﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace RoleHelper
{

    public partial class EditPj : Form
    {
        private int selec = 0;

        public EditPj()
        {
            InitializeComponent();
        }

        private void Salir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void Añadir_Click(object sender, EventArgs e)
        {
            char s='N';
            if(radioButtonHembra.Checked == true)
            {
                s = 'H';
            }
            if(radioButtonMacho.Checked==true)
            {
                s = 'M';
            }
            Personaje nuevo = new Personaje(textBoxNombreJugador.Text, textBoxNombrePersonaje.Text, Convert.ToInt32(numericUpDownVida.Value), Convert.ToInt32(numericUpDownPP.Value), Convert.ToInt32(numericUpDownNivel.Value), Convert.ToInt32(numericUpDownExperiencia.Value), checkBoxMasked.Checked, s, Convert.ToInt32(numericUpDownBO.Value), Convert.ToInt32(numericUpDownBD.Value));
            Program.avent.addPersonaje(nuevo);
            refreshpj();
            Program.Principal.refreshbarra();
            textBoxNombreJugador.Text = "";
            textBoxNombrePersonaje.Text = "";
            numericUpDownNivel.Value = numericUpDownNivel.Minimum;
            numericUpDownExperiencia.Value = numericUpDownExperiencia.Minimum;
            numericUpDownPP.Value = numericUpDownPP.Minimum;
            numericUpDownVida.Value = numericUpDownVida.Minimum;
            numericUpDownBO.Value = numericUpDownBO.Minimum;
            numericUpDownBD.Value = numericUpDownBD.Minimum;
            checkBoxMasked.Checked = false;
            radioButtonHembra.Checked = false;
            radioButtonMacho.Checked = false;
        }

        public void refreshpj()
        {
            listViewListaJug.Items.Clear();
            List<Personaje> person = Program.avent.getPersonaje();
            for (int i = 0; i < person.Count; i++)
            {
                string[] textopers = new string[10];
                textopers[0] = Convert.ToString(person[i].getID());
                textopers[1] = person[i].getJugador();
                textopers[2] = person[i].getNombre();
                textopers[3] = Convert.ToString(person[i].getNivel());
                textopers[4] = Convert.ToString(person[i].getExp());
                textopers[5] = Convert.ToString(person[i].getVidaMax());
                textopers[6] = Convert.ToString(person[i].getppMax());
                textopers[7] = Convert.ToString(person[i].getBO());
                textopers[8] = Convert.ToString(person[i].getBD());
                if (person[i].getMasked() == true)
                {
                    textopers[9] = "No se sabe";
                }
                else if (person[i].getSexo() == 'H')
                {
                    textopers[9] = "Hembra";
                }
                else if (person[i].getSexo() == 'M')
                {
                    textopers[9] = "Macho";
                }
                ListViewItem nuevalista = new ListViewItem(textopers);
                listViewListaJug.Items.Add(nuevalista);
            }
        }

        private void guardar_Click(object sender, EventArgs e)
        {
            //int pjid;
            for (int i = listViewListaJug.SelectedIndices.Count - 1; i >= 0; i--)
            {
                selec = listViewListaJug.Items[listViewListaJug.SelectedIndices[i]].Index;
                //pjid = Convert.ToInt32(listViewListaJug.Items[listViewListaJug.SelectedIndices[i]].Text);
                Personaje paguardar = Program.avent.getPersonaje(selec);
                Guardardialog.FileName = paguardar.getNombre();
                Guardardialog.ShowDialog();
            }
        }

        private void cargarpjbutton_Click(object sender, EventArgs e)
        {
            
            Cargardialog.ShowDialog();
        }

        private void Guardardialog_FileOk(object sender, CancelEventArgs e)
        {
            Personaje paguardar = Program.avent.getPersonaje(selec);
            if (paguardar.guardar(Guardardialog.FileName) == true)
            {
                MessageBox.Show("El personaje " + paguardar.getNombre() + " se ha guardado correctamente.", "Guardado", MessageBoxButtons.OK);
            }
            else
            {
                MessageBox.Show("El personaje " + paguardar.getNombre() + " no se ha podido guardar.", "Error", MessageBoxButtons.OK);
            }
        }

        private void Cargardialog_FileOk(object sender, CancelEventArgs e)
        {
            Personaje cargar = new Personaje();
            if (cargar.cargar(Cargardialog.FileName) == false)
            {
                MessageBox.Show("No se ha podido cargar el personaje.", "Error", MessageBoxButtons.OK);
            }
            Program.avent.addPersonaje(cargar);
            refreshpj();
            Program.Principal.refreshbarra();
        }
    }
}